属性查询 Sample详情

最后更新时间:2019年6月17日

属性条件查询,即为属性关键字查询,根据选择图层、字段、关键字对图层要素进行查询并显示查询结果。通过结果要素可获取其空间信息与属性信息,根据应用需求解析结果,并选择适合的方式展现。属性查询与空间查询整体思路一致,大部分步骤也相同,主要区别在于属性查询不需要设置空间范围条件,需设置属性过滤条件。

1

准备查询图层数据

与空间查询类似,首先需准备待查询的图层数据。

Map map = mapView.getMap();                                  //获取地图对象
int index = map.indexOf("四级点");                            //根据图层获取其索引值
VectorLayer vectorLayer= (VectorLayer) map.getLayer(index);  //获取矢量图层

2

创建查询对象并设置参数

创建查询对象,为其设置构造的查询属性条件等参数。

//通过矢量图层创建查询对象
FeatureQuery featureQuery=new FeatureQuery(vectorLayer);
//根据想要查询的字段、关键字、属性条件,构造SQL查询语句,保存为字符串。
String condition = "Name LIKE '%公园%'";
//设置属性查询条件
featureQuery.setWhereClause(condition);
//设置每页结果数目,默认为10
featureQuery.setPageSize(20);

3

查询

执行查询操作,并获取查询结果。

//进行要素查询
FeaturePagedResult result = featureQuery.query();
//自定义方法:以标注形式展示查询的位置点
showResultFeature(result);

4

结果展示

解析查询返回的结果要素,可通过标注、列表等形式展示给用户。

//自定义方法:获取结果中的要素及其属性、几何
private void showResultFeature(FeaturePagedResult result) {
    //遍历所有页的查询结果
    for (int i = 1; i <= result.getPageCount(); i++) {
        //获取页码对应的要素集合
        List<Feature> featureList = result.getPage(i);
        for (int j = 0; j < featureList.size(); j++) {             //遍历每一页的结果要素
            //获取要素
            Feature feature = featureList.get(j);
            java.util.Map<String, String> attributes = feature.getAttributes();    //获取要素属性
            String featureName = attributes.get("Name");           //获取Name字段对应的字段值
            Geometry fGeometry = feature.getGeometry();            //获取要素的几何信息
            //可进一步获取信息,绘制标注,或以列表形式展示
        }
    }
}

实现效果如下图所示:

属性查询.jpg